package JFrame;

import serive.UserService;
import serive.UserServiceImpl;

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Enumeration;

public class RegisterJFrame extends JFrame {
	private JLabel l_id, l_name, l_password1, l_password2, l_sex, l_address,l_age, l_idCard,l_telephoneNumber;
	private JTextField t_id, t_name,t_address,t_age,t_idCard,t_telephoneNumber;
	private JPasswordField p_password1, p_password2;
	ButtonGroup bg;
	private JRadioButton r_male, r_female;
	private JButton b_reg, b_reset;
	JFrame jFrame =this;
	UserService userService =new UserServiceImpl();

	
	public RegisterJFrame() {
	    //页面大小不可变
        setResizable(false);
		this.setTitle("快递派送系统_注册页面");
		this.setSize(500, 800);
		this.setLocation(100, 150);
		init();
        //窗体居中显示
        this.setLocationRelativeTo(null);
		this.setVisible(true);
	}
	public void init() {
		this.setLayout(new GridLayout(10, 4, 5, 5));
		l_id = new JLabel("账号", JLabel.CENTER);
		l_name = new JLabel("姓名", JLabel.CENTER);
        l_idCard = new JLabel("居民身份证", JLabel.CENTER);
        l_password1 = new JLabel("密码", JLabel.CENTER);
        l_password2 = new JLabel("确认密码", JLabel.CENTER);
        l_sex = new JLabel("性别", JLabel.CENTER);
        l_age = new JLabel("年龄", JLabel.CENTER);
        l_telephoneNumber = new JLabel("电话", JLabel.CENTER);
        l_address = new JLabel("地址", JLabel.CENTER);
        
        t_id = new JTextField();
        t_name = new JTextField();
        t_address =new JTextField();
        t_age=new JTextField();
        t_idCard=new JTextField();
        t_telephoneNumber=new JTextField();

        p_password1 = new JPasswordField();
        p_password2 = new JPasswordField();
        
        JPanel p = new JPanel();
        bg = new ButtonGroup();
        r_male = new JRadioButton("男");
        r_female = new JRadioButton("女");
        bg.add(r_male);
        bg.add(r_female);

        b_reg = new JButton("注册");

        b_reg.setBackground(new Color(104, 104, 203));
        b_reg.addActionListener(new ActionListener() {
            @Override
			public void actionPerformed(ActionEvent e) {
                JOptionPane.showMessageDialog(jFrame.getContentPane(),
                        "1、保护用户个人信息是一项基本原则，我们将会采取合理的措施保护用户的个人信息。\n" +
                                "除法律法规规定的情形外，未经用户许可我们不会向第三方公开、透漏个人信息。\n" +
                                "APP对相关信息采用专业加密存储与传输方式，保障用户个人信息安全，如果您选择\n" +
                                "同意使用APP软件， 即表示您认可并接受APP服务条款及其可能随时更新的内容。\n" +
                                "2、在您使用我们的产品或服务的过程中，我们可能：需要您提供个人信息，如姓名、\n" +
                                "电子邮件地址、电话号码、联系地址等以及注册或申请服务时需要 的其它类似个人信息；\n" +
                                "您对我们的产品和服务使用即表明您同意我们对这些信息的收集和合理使用。您可以自行\n" +
                                "选择拒绝、放弃使用相关产品或服务。\n" +
                                "3、由于您的自身行为或不可抗力等情形，导致上述可能涉及您隐私或您认为是私人信\n" +
                                "息的内容发生被泄露、批漏，或被第三方获取、使用、转让等情形的，均由您自行承担\n" +
                                "不利后果，我们对此不承担任何责任。\n" +
                                "4、我们拥有对上述条款的最终解释权。\n"
                            , "软件服务及隐私条款",JOptionPane.WARNING_MESSAGE);

                String sex=null;
                Enumeration<AbstractButton> bgElements = bg.getElements();

                while (bgElements.hasMoreElements()) {
                    AbstractButton btn = bgElements.nextElement();
                    if(btn.isSelected()){
                        sex=btn.getText();
                        break;
                    }
                }
                if (sex == null){
                    JOptionPane.showMessageDialog(jFrame.getContentPane(),
                            "请选择性别", "！！！",JOptionPane.WARNING_MESSAGE);
                }
                boolean isRegister = userService.register(t_id.getText(), p_password1.getText(), p_password2.getText(),
                        t_idCard.getText(), sex, Integer.parseInt(t_age.getText()), t_address.getText(), t_name.getText(),
                        t_telephoneNumber.getText());
                if (!isRegister){
                    JOptionPane.showMessageDialog(jFrame.getContentPane(), "注册失败,可能账号已存在 或者两次密码不一致\n" +
                            "或者用户名不能以数字开头\n" +
                            "用户名和密码可以包含6-20位的字母、数字、下划线", "注册失败",JOptionPane.WARNING_MESSAGE);
                }else {
                    JOptionPane.showMessageDialog(jFrame.getContentPane(), "注册成功，成功上传服务器", "！！！",JOptionPane.WARNING_MESSAGE);
                    jFrame.dispose();
                }

            }
        	
        });
        b_reset = new JButton("重置");
        b_reset.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                Tools.emptying(t_id, t_name,t_address,t_age,t_idCard,t_telephoneNumber,p_password1, p_password2);
            }
        });
        b_reset.setBackground(new Color(173, 167, 159));

        

        p.add(r_male);
        p.add(r_female);

        
        Tools.setFonts(18,1,l_id, l_name, l_password1, l_password2, l_sex, l_address,l_age,
                l_idCard,l_telephoneNumber,r_male, r_female, b_reg, b_reset);
        Tools.addComponents(this,l_id,t_id,l_name,t_name,l_password1,p_password1,l_password2,p_password2,
                l_address,t_address,l_sex,p, l_age,t_age, l_idCard,t_idCard,l_telephoneNumber,t_telephoneNumber,
                b_reg,b_reset);


        
	}


}
